home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Toolbox / Visual Basic Toolbox (P.I.E.)(1996).ISO / misc / angular / dokument.tx_ / dokument.tx
Encoding:
Text File  |  1995-08-20  |  7.9 KB  |  238 lines

  1. Dipl.-Chem.
  2. Thomas Meinike
  3. W. v. Klewiz-Str. 3
  4. D-06132 Halle
  5.  
  6. 02. 02. 1995
  7.  
  8.  
  9. ANGULAR.DLL - Bibliothek der Winkelfunktionen - Registrierte Vollversion
  10. ------------------------------------------------------------------------
  11.  
  12. Beim Programmieren mit Microsoft Visual Basic 3.0 stellte ich fest, daß von
  13. den Winkelfunktionen nur ATN, COS, SIN und TAN implementiert sind. Es ist
  14. aber möglich mit diesen und einigen Zusatzformeln die fehlenden Funktionen
  15. nachzubilden. Ich beschritt jedoch einen anderen Weg und erinnerte mich an
  16. FORTRAN, die Sprache der Mathematiker und Naturwissenschaftler. 
  17. Die Vollversion enthält 24 in FORTRAN geschriebene Winkelfunktionen. 
  18. Der Code ist für die Nutzung des mathematischen Coprozessors compiliert 
  19. worden und wird bei Abwesenheit desselben durch die Windows-interne Emulation 
  20. interpretiert.
  21.  
  22. Die DLL-Funktionen sind jeweils als Single- und Double-Version ausgeführt.
  23. Dazu sind sie an der ersten Stelle des Funktionsnamens mit 'S' bzw. 'D'
  24. gekennzeichnet. Die folgende Liste enthält alle Funktionen geordnet nach
  25. Klassen und ohne die Angabe des ersten Buchstabens. 
  26.  
  27.  
  28. Trigonometrische Funktionen
  29. ---------------------------
  30.  
  31.  Sinus()
  32.  Cosinus()
  33.  Tangens()
  34.  Cotangens()
  35.  Secans()
  36.  Cosecans()
  37.  
  38.  
  39. Inverse Trigonometrische Funktionen
  40. -----------------------------------
  41.  
  42.  ArcSinus()
  43.  ArcCosinus()
  44.  ArcTangens()
  45.  ArcCotangens()
  46.  ArcSecans()
  47.  ArcCosecans()
  48.  
  49.  
  50. Hyperbolische Funktionen
  51. ------------------------
  52.  
  53.  HypSinus()
  54.  HypCosinus()
  55.  HypTangens()
  56.  HypCotangens()
  57.  HypSecans()
  58.  HypCosecans()
  59.  
  60.  
  61. Inverse Hyperbolische Funktionen
  62. --------------------------------
  63.  
  64.  ArcHypSinus()
  65.  ArcHypCosinus()
  66.  ArcHypTangens()
  67.  ArcHypCotangens()
  68.  ArcHypSecans()
  69.  ArcHypCosecans()
  70.  
  71. In der oben bezeichneten Nomenklatur existiert also beispielsweise die
  72. Funktion 'Sinus Hyperbolicus' als:
  73.  
  74. DHypSinus() und SHypSinus()
  75.  
  76. Die Übergabeparameter beim Aufruf der Funktion sind 'Argument' und 'Result',
  77. wiederum in Single- bzw. Double-Notation, z.B.
  78.  
  79. DHypSinus(DArgument, DResult) und SHypSinus(SArgument, SResult)
  80.  
  81. In dieser Form ist bei allen enthaltenen Funktionen vorzugehen.
  82.  
  83.  
  84. Anwendung der DLL-Funktionen in eigenen Visual Basic-Programmen
  85. ---------------------------------------------------------------
  86.  
  87. Das Prinzip wird wiederum an der HypSinus-Funktion verdeutlicht.
  88.  
  89. Zunächst müssen die verwendeten Funktionen aus der DLL im Deklarationsteil
  90. des VB-Projektes vereinbart werden:
  91.  
  92. Declare Sub DHypSinus Lib "Angular.dll" (DArgument As Double, DResult As Double)
  93. Declare Sub SHypSinus Lib "Angular.dll" (SArgument As Single, SResult As Single)
  94.  
  95. In der Praxis ist es einfacher alle DLL-Funktionen in der Datei 'GLOBAL.BAS' zu
  96. deklarieren und zum Projekt hinzuzuladen. Diese Datei ist in der Shareware- bzw.
  97. Vollversion mit den jeweils unterstützten Funktionen enthalten.
  98.  
  99. Bei den nachfolgenden 3 Beispielen befinden sich auf der VB-Form 2 Textfelder
  100. (Text1 und Text2) für Ein- und Ausgaben sowie ein Button (Command1) für das Aus-
  101. führen der Berechnung.
  102.  
  103.  
  104. Beispiel 1:
  105. -----------
  106.  
  107. Sub Command1_Click ()
  108.  
  109.   Dim DArgument As Double
  110.   Dim DResult As Double
  111.  
  112.   DArgument = Val(Text1.Text)
  113.   Call DHypSinus(DArgument, DResult)
  114.   Text2.Text = Str$(DResult)
  115.  
  116. End Sub
  117.  
  118.  
  119. Beispiel 2:
  120. -----------
  121.  
  122. Sub Command1_Click ()
  123.  
  124.   Dim DArgument As Double
  125.   Dim DResult As Double
  126.  
  127.   DArgument = Val(Text1.Text)
  128.   If DArgument = 0 Then Text2.Text = " nicht def.": Exit Sub
  129.   Call DCotangens(DArgument, DResult)
  130.   Text2.Text = Str$(DResult)
  131.  
  132. End Sub
  133.  
  134.  
  135. Beispiel 3:
  136. -----------
  137.  
  138. Sub Command1_Click ()
  139.  
  140.   Dim SArgument As Single
  141.   Dim SResult As Single
  142.  
  143.   SArgument = Val(Text1.Text)
  144.   If Abs(SArgument) > 1 Then Text2.Text = " nicht def.": Exit Sub
  145.   Call SArcCosinus(SArgument, SResult)
  146.   Text2.Text = Str$(SResult)
  147.  
  148. End Sub
  149.  
  150.  
  151. In den Beispielen 2 und 3 wird vor dem Aufrufen der DLL-Winkelfunktion
  152. zunächst eine Prüfung des Argumentes bezüglich des Definitionsbereiches
  153. der Funktion vorgenommen. Diese Aufgabe muß vom Programmierer übernommen
  154. werden, da in der DLL keine Fehlerbehandlung enthalten ist. Dieses Vorgehen
  155. wurde gewählt, da die aufgerufene Funktion einen Rückgabewert besitzt und
  156. dieser nicht beliebig gesetzt werden kann (würde man die Result-Variable
  157. bei einem Fehler z.B. auf Null setzen, so stellt sich die Frage wie der
  158. Anwender der Funktion auswertet ob Result=0 einen Fehler oder einen
  159. wirklichen Funktionswert darstellt). Um den Code der DLL und die Aufruf-
  160. konventionen für den VB-Programmierer nicht zu kompliziert zu gestalten,
  161. wurde dieser Kompromiß gewählt. In den obigen Beispielen wird beim Nicht-
  162. genügen des Argumentes die Prozedur ohne Aufruf der DLL-Funktion verlassen.
  163. Der Anwender der DLL möge sich in den Tabellenwerken der mathematischen
  164. Funktionen über den Definitionsbereich der gewünschten Funktionen informieren,
  165. da das den Rahmen an dieser Stelle sprengen würde. Wie im Beispiel 1 zu sehen
  166. ist, sind einige Funktionen auch für alle reellen Argumente gültig.
  167. Wichtiger Hinweis: alle Winkelfunktionen der DLL erwarten die Argumente im
  168. Bogenmaß!
  169.  
  170.  
  171. Beispielprogramm FULLDEMO.EXE
  172. -----------------------------
  173.  
  174. Das mitgelieferte Programm FULLDEMO.EXE wurde mit VB3 geschrieben und
  175. demonstriert alle Funktionen in der Vollersion der DLL. Für ein
  176. eingegebenes Argument können alle 24 Funktionen in Single- bzw. Double-
  177. Ausführung berechnet werden. Bei ungeeigneten Argumenten wird wie oben 
  178. beschrieben verfahren und 'nicht definiert' als Funktionsergebnis gemeldet.
  179.  
  180.  
  181. Copyright und Nutzungsrecht
  182. ---------------------------
  183.  
  184. Die registrierte DLL darf vom Käufer in eigenen Programmen verwendet und mit
  185. diesen ohne Beschränkung weitergegeben werden. Es fallen keine zusätzlichen
  186. Lizenzgebühren an. Erwirbt ein Anwender ein Programm mit integrierter DLL,
  187. so darf er diese nur im Zusammenhang mit dieser Software nutzen.
  188. Das Copyright der 'ANGULAR.DLL' bleibt beim Autor. Der mitgelieferte FORTRAN-
  189. Code darf von registrierten Benutzern verändert oder erweitert werden, wobei
  190. der Ursprungs-Copyright-Vermerk in der Software / Dokumentation einzutragen
  191. ist.
  192.  
  193.  
  194. Anwendungshinweise
  195. ------------------
  196.  
  197. Für die Anwendung der ANGULAR.DLL wird seitens des Autors keine Haftung in
  198. Bezug auf Schäden an Hardware oder Software übernommen. Die DLL funktioniert
  199. mit Visual Basic 3.0 in der beschriebenen Weise. Es wird darauf hingewiesen
  200. den Funktionsaufruf auf Zulässigkeit in Bezug auf das Argument zu prüfen und
  201. die VB-Projekte in der Testphase stets vor dem Start in der Entwicklungs-
  202. umgebung abzuspeichern. Ein fehlerhafter Aufruf beendet Visual Basic sofort!
  203. Das Beispielprogramm FULLDEMO.EXE wurde unter Einhaltung dieser Regeln ent-
  204. wickelt und funktioniert ohne bekannte Probleme.
  205. Die DLL kann prinzipiell auch mit anderen DLL-fähigen Windows-Entwicklungs-
  206. systemen verwendet werden. Dafür liegen dem Autor bisher keine Anwender-
  207. mitteilungen vor.
  208.  
  209.  
  210. Dateien der Programmdiskette
  211. ----------------------------
  212.  
  213. 01 ANGULAR.BAS    ...   Deklarationen für Visual Basic
  214. 02 ANGULAR.DLL    ...   Bibliothek der Winkelfunktionen
  215. 03 ANGULAR.BAT    ...   Aufruf von FORTRAN-Compiler und -Linker
  216. 04 ANGULAR.DEF    ...   Linker-Definitionsdatei
  217. 05 ANGULAR.FOR    ...   FORTRAN-Code der ANGULAR.DLL
  218. 06 FULLDEMO.EXE   ...   Demo-Programm mit allen Funktionen
  219. 07 VBRUN300.DLL   ...   Visual Basic Runtime Library
  220. 08 DOKUMENT.TXT   ...   diese Dokumentation im ASCII-Format
  221. 09 DOKUMENT.WRI   ...   diese Dokumentation im Windows-Write-Format
  222. 10 FUNCTION.EXE   ...   alle Funktionsgraphen im PCX-Format
  223. 11 FUNCTION.VBX   ...   Grafik-Ressourcen für FULLDEMO.EXE
  224.  
  225. Anmerkung: 
  226. Die Dateien 03 bis 05 sind zur Anwendung der DLL nicht notwendig,
  227. sie enthalten die Entwicklungsinformation in MS-FORTRAN 5.1.
  228. Für eigene Projekte sind die Dateien 01 und 02 zu verwenden, mit der
  229. erstellten EXE-Datei muß dann nur noch die 'ANGULAR.DLL' geliefert werden!
  230.  
  231.  
  232. Viel Erfolg wünscht
  233. Thomas Meinike
  234. Basic ist professionell!
  235.  
  236. E-Mail: meiniket@mailserv.rz.fh-merseburg.de
  237. Telefon: 0345 / 7764468
  238.